什麼是運算式,依據MDN-Expressions and operators的說法:
An expression is a valid unit of code that resolves to a value. There are two types of expressions: those that have side effects (such as assigning values) and those that purely evaluate.
能有效解釋值的程式碼就是運算式,運算式有兩種展現形式:
純粹的求數值很好懂就是一個計算的數學算式,可以回應出他的值
像是輸入8+7 就可以得到這個計算的結果17
8+9
//17
那什麼式函數副作用呢?
依據wiki-Side_effect_(computer_science)的說法
Referential transparency means that an expression (such as a function call) can be replaced with its value.
可以在呼叫的同時去改變它的值
這樣說或許還不是很懂,如果用程式碼來說明會像這樣
let a = "shark"
我們先宣告一個變數a並賦予他一個值(字串shark)
a
// "shark"
呼叫a的時候,會回傳a的值(shark)
a = "shark-BLÅHAJ"
// "shark-BLÅHAJ"
但你也能在呼叫a的同時,去修改a的值(shark-BLÅHAJ),像上面那樣。
就種行為被成為side effects(函數副作用)。
函式的基本種類依據ECMAScript Language: Expressions可以分為三種
8
// 8 常數8
null
// null 文字null
this
// Window {window: Window, self: Window, document: document, name: '', location: Location, …}
// this關鍵字可以參考執行函數的所在位置(某些語言的關鍵字)
let a = "shark"
a
// "shark"
// 呼叫變數 a 可以得到 a的值 (variable references)
let a = "shark"
// 將a進行賦值
什麼是運算子,依據MDN-Expressions and operators的說法:
All complex expressions are joined by operators, such as = and +.
連接所有複雜運算式的東西,皆為運算子,像是"="或"+"
運算子的種類很多
let a ="shark"
// 將"shark"這個值(字串)指派給a,也就是我們常說的賦值
2 == "2"
// true 經過轉型所以是true
2 === "2"
// false 經過轉型所以是false
Object.is(+0,-0)
// false 0的判斷跟===不一樣
//
5%2
// 1 得5除以2的餘數1
2**2
// 4 2的2次方
const a = 5;
// 00000000000000000000000000000101 32為位元長這樣
console.log(~a);
// 11111111111111111111111111111010 0與1值互換之後再轉回數字
// -6 轉回數字得到6
2 == 2 && 3 == 3
// true 當判斷結果均為true才會回傳true
// 後面直接用true跟false來替代判斷式
true || false
false || true
// true OR只要有一個是true就會回傳true
false || false
// false 都是false則回傳false
!true
//false 將true的結果反轉
"shark" + " BLÅHAJ"
// "shark BLÅHAJ"
true ? "shark" : "BLÅHAJ"
// 因為condition判斷為true所以回傳"shark"
false ? "shark" : "BLÅHAJ"
// 因為condition判斷為false所以回傳"BLÅHAJ"
for (let i = 0, j = 5; i <= j; i++, j--){
console.log(i,j)
};
// 0 5
// 1 4
// 2 3
// 在for 迴圈同時使用兩個參數
typeof true
// boolean 上面只有一個運算子typeof
let oceans = {shark:"BLÅHAJ"}
"shark" in oceans
//true 因為物件oceans裡面有"shark",所以回傳true
參考資料
wiki-Side_effect_(computer_science)
MDN-Expressions and operators
ECMAScript Language: Expressions
MDN-in operator